---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
  creationTimestamp: null
  name: ciliumbgpnodeconfigs.cilium.io
spec:
  group: cilium.io
  names:
    categories:
    - cilium
    - ciliumbgp
    kind: CiliumBGPNodeConfig
    listKind: CiliumBGPNodeConfigList
    plural: ciliumbgpnodeconfigs
    shortNames:
    - cbgpnode
    singular: ciliumbgpnodeconfig
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v2alpha1
    schema:
      openAPIV3Schema:
        description: CiliumBGPNodeConfig is node local configuration for BGP agent.
          Name of the object should be node name. This resource will be created by
          Cilium operator and is read-only for the users.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: Spec is the specification of the desired behavior of the
              CiliumBGPNodeConfig.
            properties:
              bgpInstances:
                description: BGPInstances is a list of BGP router instances on the
                  node.
                items:
                  description: CiliumBGPNodeInstance is a single BGP router instance
                    configuration on the node.
                  properties:
                    localASN:
                      description: LocalASN is the ASN of this virtual router. Supports
                        extended 32bit ASNs.
                      format: int64
                      maximum: 4294967295
                      minimum: 1
                      type: integer
                    localPort:
                      description: "LocalPort is the port on which the BGP daemon
                        listens for incoming connections. \n If not specified, BGP
                        instance will not listen for incoming connections."
                      format: int32
                      maximum: 65535
                      minimum: 1
                      type: integer
                    name:
                      description: Name is the name of the BGP instance. This name
                        is used to identify the BGP instance on the node.
                      maxLength: 255
                      minLength: 1
                      type: string
                    peers:
                      description: Peers is a list of neighboring BGP peers for this
                        virtual router
                      items:
                        properties:
                          localAddress:
                            description: LocalAddress is the IP address of the local
                              interface to use for the peering session. This configuration
                              is derived from CiliumBGPNodeConfigOverride resource.
                              If not specified, the local address will be used for
                              setting up peering.
                            pattern: ((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))
                            type: string
                          name:
                            description: Name is the name of the BGP peer. This name
                              is used to identify the BGP peer for the BGP instance.
                            type: string
                          peerASN:
                            description: PeerASN is the ASN of the peer BGP router.
                              Supports extended 32bit ASNs
                            format: int64
                            maximum: 4294967295
                            minimum: 1
                            type: integer
                          peerAddress:
                            description: PeerAddress is the IP address of the neighbor.
                              Supports IPv4 and IPv6 addresses.
                            pattern: ((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))
                            type: string
                          peerConfigRef:
                            description: PeerConfigRef is a reference to a peer configuration
                              resource. If not specified, the default BGP configuration
                              is used for this peer.
                            properties:
                              group:
                                default: cilium.io
                                description: Group is the group of the peer config
                                  resource. If not specified, the default of "cilium.io"
                                  is used.
                                type: string
                              kind:
                                default: CiliumBGPPeerConfig
                                description: Kind is the kind of the peer config resource.
                                  If not specified, the default of "CiliumBGPPeerConfig"
                                  is used.
                                type: string
                              name:
                                description: Name is the name of the peer config resource.
                                  Name refers to the name of a Kubernetes object (typically
                                  a CiliumBGPPeerConfig).
                                type: string
                            required:
                            - name
                            type: object
                        required:
                        - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - name
                      x-kubernetes-list-type: map
                    routerID:
                      description: "RouterID is the BGP router ID of this virtual
                        router. This configuration is derived from CiliumBGPNodeConfigOverride
                        resource. \n If not specified, the router ID will be derived
                        from the node local address."
                      format: ipv4
                      type: string
                  required:
                  - name
                  type: object
                maxItems: 16
                minItems: 1
                type: array
                x-kubernetes-list-map-keys:
                - name
                x-kubernetes-list-type: map
            required:
            - bgpInstances
            type: object
          status:
            description: Status is the most recently observed status of the CiliumBGPNodeConfig.
            properties:
              bgpInstances:
                description: BGPInstances is the status of the BGP instances on the
                  node.
                items:
                  properties:
                    localASN:
                      description: LocalASN is the ASN of this BGP instance.
                      format: int64
                      type: integer
                    name:
                      description: Name is the name of the BGP instance. This name
                        is used to identify the BGP instance on the node.
                      type: string
                    peers:
                      description: PeerStatuses is the state of the BGP peers for
                        this BGP instance.
                      items:
                        description: CiliumBGPNodePeerStatus is the status of a BGP
                          peer.
                        properties:
                          name:
                            description: Name is the name of the BGP peer.
                            type: string
                          peerASN:
                            description: PeerASN is the ASN of the neighbor.
                            format: int64
                            type: integer
                          peerAddress:
                            description: PeerAddress is the IP address of the neighbor.
                            type: string
                          peeringState:
                            description: PeeringState is last known state of the peering
                              session.
                            type: string
                          routesAdvertised:
                            description: RoutesAdvertised is the number of routes
                              advertised to this peer.
                            format: int32
                            type: integer
                          routesReceived:
                            description: RoutesReceived is the number of routes received
                              from this peer.
                            format: int32
                            type: integer
                          timers:
                            description: Timers is the state of the negotiated BGP
                              timers for this peer.
                            properties:
                              appliedHoldTimeSeconds:
                                description: AppliedHoldTimeSeconds is the negotiated
                                  hold time for this peer.
                                format: int32
                                type: integer
                              appliedKeepaliveSeconds:
                                description: AppliedKeepaliveSeconds is the negotiated
                                  keepalive time for this peer.
                                format: int32
                                type: integer
                            type: object
                          uptime:
                            description: Uptime is the time since the last peering
                              session was established.
                            type: string
                        required:
                        - name
                        - peerAddress
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - name
                      x-kubernetes-list-type: map
                  required:
                  - name
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - name
                x-kubernetes-list-type: map
            type: object
        required:
        - metadata
        - spec
        type: object
    served: true
    storage: true
    subresources: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
